package oj;

import java.util.LinkedList;
import java.util.Queue;

public class Num111 {
    //BFS
    public int minDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        //BFS
        Queue<TreeNode> q=new LinkedList<>();
        q.offer(root);
        int depth=1;
        while(!q.isEmpty()){
            int size=q.size();
            for(int i=0;i<size;i++){
                TreeNode cur=q.poll();
                if(cur.left==null && cur.right==null){
                    return depth;
                }
                if(cur.left!=null){
                    q.offer(cur.left);
                }
                if(cur.right!=null){
                    q.offer(cur.right);
                }
            }
            depth++;
        }
        return depth;
    }

    //递归
//    public int minDepth(TreeNode root) {
//        if (root == null) {
//            return 0;
//        }
//        if (root.left == null && root.right == null) {
//            return 1;
//        }
//        if(root.left==null){
//            return 1+minDepth(root.right);
//        }
//        if(root.right==null){
//            return 1+minDepth(root.left);
//        }
//        return Math.min(1 + minDepth(root.left), 1 + minDepth(root.right));
//    }
}
